home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 031-040 / amok37 / skrÄbel / sc_computer-mod-asm.zoo / Skräbel-src / sc_Computer-Mod.ASM / SteineGelegtMoeglich.ASM < prev    next >
Assembly Source File  |  1990-03-19  |  3KB  |  126 lines

  1. ;(*****************************************************************************
  2. ;
  3. ;  :Program.       SteineGelegtMoeglich.ASM
  4. ;  :Author.        Georg Brünsing
  5. ;  :Address.       Grechte 2, D-4156 Willich 3
  6. ;  :Phone.         02156/7534
  7. ;  :ShortCut.      gb
  8. ;  :Support.       -
  9. ;  :Version.       1.0
  10. ;  :Date.          20-Feb-89
  11. ;  :Copyright.     PD
  12. ;  :Language.      Assembler
  13. ;  :Translator.    Profimat / DATA BECKER
  14. ;  :Imports.       -
  15. ;  :Update.        -
  16. ;  :History.       -
  17. ;  :ModHistory.    -
  18. ;  :Contents.      Assembler Source für Skräbel
  19. ;  :Remark.        -
  20. ;  :Usage.         -
  21. ;
  22. ;*****************************************************************************)
  23.  
  24.  
  25.  
  26.    INCLUDE "Rec.ASM"
  27.  
  28. SteineGelegtMoeglich:
  29. ; Eingang in A2 = ComputerMsgPtr
  30. ; Ausgang in D0 = TRUE wenn Ok
  31. \Sprung     EQUR A6
  32. \Gesetzt    EQUR A6
  33. \RSpZug     EQUR A5
  34. \Wort       EQUR A3
  35. \ComMsgPtr  EQUR A2
  36. \ZugRing    EQUR A1
  37. \Spielfeld  EQUR A0
  38. \A5Retten   EQUR D5
  39. \right      EQUR D4
  40. \down       EQUR D3
  41. \Off        EQUR D2
  42. \Bool       EQUR D0
  43. \ch         EQUR D1
  44.    MOVE.L   A5 , \A5Retten
  45.    LEA      ZugRing(\ComMsgPtr) , \ZugRing
  46.    MOVE.W   AkZugRing(\ComMsgPtr) , \Off
  47.    SUBQ.W   #BeginZugRing , \Off
  48.    MULU     #ZugRingSize , \Off
  49.    LEA      (\ZugRing,\Off.W) , \ZugRing
  50.    MOVE.W   left(\ZugRing) , \right
  51.    BLE      \Nicht_Ok
  52.    SUBQ.W   #1 , \right
  53.    MOVE.W   top(\ZugRing) , \down
  54.    BLE      \Nicht_Ok
  55.    SUBQ.W   #1 , \down
  56.    LEA      Spielfeld(\ComMsgPtr), \Spielfeld
  57.    LEA      Wort(\ComMsgPtr) , \Wort
  58.    CLR.W    RAnzSpZuege(\ZugRing)
  59.    MOVE.W   \right , \Off
  60.    MULU     #FeldAnz , \Off
  61.    ADD.W    \down , \Off
  62. \LOOP:
  63.    MOVE.B   (\Wort)+ , \ch
  64.    BEQ.S    \EXIT
  65.    TST.B    (\Spielfeld,\Off.W)
  66.    BEQ.S    \IF_1_ELSE
  67.    CMP.B    (\Spielfeld,\Off.W) , \ch
  68.    BNE.S    \Nicht_Ok
  69.    BRA.S    \END_IF_1
  70. \IF_1_ELSE:
  71.    LEA      Gesetzt(\ZugRing) , \Gesetzt
  72.    LEA      RSpZug(\ZugRing) , \RSpZug
  73. \REPEAT:
  74.    TST.B    (\Gesetzt)+
  75.    BNE.S    \UNTIL
  76.    CMP.B    char(\RSpZug) , \ch
  77.    BEQ.S    \UNTIL_END
  78. \UNTIL:
  79.    ADDQ.L   #SpielerZugSize , \RSpZug
  80.    BRA.S    \REPEAT
  81. \UNTIL_END:
  82.    MOVE.W   \right , XPos(\RSpZug)
  83.    ADDQ.W   #1 , XPos(\RSpZug)
  84.    MOVE.W   \down , YPos(\RSpZug)
  85.    ADDQ.W   #1 , YPos(\RSpZug)
  86.    ST       -(\Gesetzt)
  87.    ADDQ.W   #1 , RAnzSpZuege(\ZugRing)
  88. \END_IF_1:
  89.    TST.B    (\Wort)
  90.    BEQ.S    \EXIT
  91.    CMP.B    #SenkrechtBit , RAngelegt(\ZugRing)
  92.    BNE.S    \Waagerecht
  93.    ADDQ.W   #1 , \down
  94.    CMP.W    #FeldAnz-1 , \down
  95.    BGT.S    \Nicht_Ok
  96.    ADDQ.W   #1 , \Off
  97.    BRA.S    \END_IF_2
  98. \Waagerecht:
  99.    ADDQ.W   #1 , \right
  100.    CMP.W    #FeldAnz-1 , \right
  101.    BGT.S    \Nicht_Ok
  102.    ADD.W    #FeldAnz , \Off
  103. \END_IF_2:
  104.    BRA.S    \LOOP
  105. \EXIT:
  106.    TST.W    RAnzSpZuege(\ZugRing)
  107.    BEQ.S    \Nicht_Ok
  108.    MOVE.L   AdrAngrenzungenOk(\ComMsgPtr) , \Sprung
  109.    BSR.S    \right_down_wegschreiben
  110.    JMP      (\Sprung)
  111. \Ok:
  112.    MOVEQ    #-1 , \Bool
  113.    BRA.S    \right_down_wegschreiben
  114. \Nicht_Ok:
  115.    MOVEQ    #0 , \Bool
  116. \right_down_wegschreiben:
  117.    MOVEA.L  \A5Retten , A5
  118.    ADDQ.W   #1 , \right
  119.    MOVE.W   \right , right(\ZugRing)
  120.    ADDQ.W   #1 , \down
  121.    MOVE.W   \down , down(\ZugRing)
  122.    RTS
  123.  
  124.    END
  125.  
  126.